Telegram Group & Telegram Channel
Потоки записи в Node.js — практическое руководство

Node.js предоставляет мощную абстракцию ввода-вывода — Streams (потоки), которые позволяют эффективно обрабатывать данные частями, особенно когда речь идёт о больших объёмах данных. В этом руководстве мы сосредоточимся на Writable Streams — потоках, в которые можно записывать данные.

Что такое Writable Stream?

Writable Stream — это абстракция для источника данных, в который можно записывать. Примеры:

- fs.createWriteStream() — запись в файл
- http.request() — отправка HTTP-запросов
- net.Socket — запись в TCP-сокет
- process.stdout — вывод в консоль

Основные методы и события

Метод .write(chunk, [encoding], [callback])

Используется для записи данных в поток. Возвращает true, если поток готов принять ещё данные, иначе — false.


const fs = require('fs');
const stream = fs.createWriteStream('output.txt');

const result = stream.write('Hello, world!');
console.log(result); // true или false


Метод .end([chunk], [encoding], [callback])

Завершает поток. При необходимости можно передать финальный кусок данных.


stream.end('Final data');


События

- drain — вызывается, когда поток снова готов к записи (если ранее вернул false).
- finish — вызывается после завершения записи (после .end()).
- error — при возникновении ошибки.


stream.on('finish', () => console.log('Запись завершена.'));
stream.on('error', err => console.error('Ошибка:', err));


Управление потоком вручную

Когда stream.write() возвращает false, это означает, что внутренний буфер переполнен. Чтобы избежать перегрузки, стоит дождаться события drain:


function writeMany(stream, data, times) {
let i = 0;
function write() {
while (i < times) {
const ok = stream.write(data);
if (!ok) {
stream.once('drain', write);
return;
}
i++;
}
stream.end();
}
write();
}

writeMany(fs.createWriteStream('big.txt'), 'data\n', 10000);


Пользовательские Writable Streams

Вы можете создать свой Writable Stream, расширив Writable из модуля stream:


const { Writable } = require('stream');

class Logger extends Writable {
_write(chunk, encoding, callback) {
console.log(`LOG: ${chunk.toString()}`);
callback();
}
}

const logger = new Logger();
logger.write('Hello\n');
logger.end('Bye\n');


Итого

Writable Streams — ключевой инструмент в Node.js для эффективной записи данных. Они позволяют управлять потоком, обрабатывать ошибки и даже создавать свои реализации.

https://pavel-romanov.com/writable-streams-in-nodejs-a-practical-guide

✍️ @nodejs_lib



tg-me.com/nodejs_lib/345
Create:
Last Update:

Потоки записи в Node.js — практическое руководство

Node.js предоставляет мощную абстракцию ввода-вывода — Streams (потоки), которые позволяют эффективно обрабатывать данные частями, особенно когда речь идёт о больших объёмах данных. В этом руководстве мы сосредоточимся на Writable Streams — потоках, в которые можно записывать данные.

Что такое Writable Stream?

Writable Stream — это абстракция для источника данных, в который можно записывать. Примеры:

- fs.createWriteStream() — запись в файл
- http.request() — отправка HTTP-запросов
- net.Socket — запись в TCP-сокет
- process.stdout — вывод в консоль

Основные методы и события

Метод .write(chunk, [encoding], [callback])

Используется для записи данных в поток. Возвращает true, если поток готов принять ещё данные, иначе — false.


const fs = require('fs');
const stream = fs.createWriteStream('output.txt');

const result = stream.write('Hello, world!');
console.log(result); // true или false


Метод .end([chunk], [encoding], [callback])

Завершает поток. При необходимости можно передать финальный кусок данных.


stream.end('Final data');


События

- drain — вызывается, когда поток снова готов к записи (если ранее вернул false).
- finish — вызывается после завершения записи (после .end()).
- error — при возникновении ошибки.


stream.on('finish', () => console.log('Запись завершена.'));
stream.on('error', err => console.error('Ошибка:', err));


Управление потоком вручную

Когда stream.write() возвращает false, это означает, что внутренний буфер переполнен. Чтобы избежать перегрузки, стоит дождаться события drain:


function writeMany(stream, data, times) {
let i = 0;
function write() {
while (i < times) {
const ok = stream.write(data);
if (!ok) {
stream.once('drain', write);
return;
}
i++;
}
stream.end();
}
write();
}

writeMany(fs.createWriteStream('big.txt'), 'data\n', 10000);


Пользовательские Writable Streams

Вы можете создать свой Writable Stream, расширив Writable из модуля stream:


const { Writable } = require('stream');

class Logger extends Writable {
_write(chunk, encoding, callback) {
console.log(`LOG: ${chunk.toString()}`);
callback();
}
}

const logger = new Logger();
logger.write('Hello\n');
logger.end('Bye\n');


Итого

Writable Streams — ключевой инструмент в Node.js для эффективной записи данных. Они позволяют управлять потоком, обрабатывать ошибки и даже создавать свои реализации.

https://pavel-romanov.com/writable-streams-in-nodejs-a-practical-guide

✍️ @nodejs_lib

BY Node JS


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/nodejs_lib/345

View MORE
Open in Telegram


Node JS Telegram | DID YOU KNOW?

Date: |

The seemingly negative pandemic effects and resource/product shortages are encouraging and allowing organizations to innovate and change.The news of cash-rich organizations getting ready for the post-Covid growth economy is a sign of more than capital spending plans. Cash provides a cushion for risk-taking and a tool for growth.

At a time when the Indian stock market is peaking and has rallied immensely compared to global markets, there are companies that have not performed in the last 10 years. These are definitely a minor portion of the market considering there are hundreds of stocks that have turned multibagger since 2020. What went wrong with these stocks? Reasons vary from corporate governance, sectoral weakness, company specific and so on. But the more important question is, are these stocks worth buying?

Node JS from br


Telegram Node JS
FROM USA